Исходный текст
Option Explicit
Call ExportObjectEventsList(ThisObject)
'==============================================================================
' Вывести в лист Excel данные о событиях объекта, вызванные пользователем, создавшим объект
'==============================================================================
Sub ExportObjectEventsList(Obj)
Dim User, EvColl, EvFilter, ex, exRow, EventObj, strType
'ПОлучить ссылку на пользователя и на коллекцию событий объекта
Set EvColl = Obj.Events
Set User = Obj.CreateUser
'Включить фильтр
Set EvFilter = EvColl.Filter
EvFilter.User = User
EvFilter.On = TRUE '!! Не забыть включить фильтр
'Если коллекция получилась пустой, закончить работу
If EvColl.Count = 0 Then
MsgBox "Для пользователя " & User.Description & Chr(10) & _
" событий не зарегистрировано.", vbInformation
Exit Sub
End If
' Запустить приложение MSExcel
Set ex = CreateObject("Excel.Application")
' Добавить Книгу MSExcel
ex.Workbooks.Add
ex.Application.WindowState = -4140 ' xlMinimized
ex.Application.Visible = True
' Инициализация первой строки листа
exRow = 1
' Заполнение заголовков
With ex.ActiveSheet
.Cells(exRow,1).Value = "Тип события"
.Cells(exRow,2).Value = "Описание генератора события"
.Cells(exRow,3).Value = "Время события"
End With
' Отобрать события, вызванные данным пользователем за
' последний месяц, и вывести их список в MSExcel
For Each EventObj In EvColl
' Получить тип события из массива по его номеру
Call GetEventType(EventObj.Type, strType)
' Увеличиваем номер строки таблицы
exRow = exRow + 1
' Заполняем строку таблицы свойствами события
With ex.ActiveSheet
.Cells(exRow,1).Value = strType
.Cells(exRow,2).Value = EventObj.Description
.Cells(exRow,3).Value = EventObj.Time
End With
Next
'Сообщить количество событий в отфильтрованной коллекции
MsgBox "Для пользователя " & User.Description & Chr(10) & " зарегистрировано " _
& EvColl.Count & " событий в коллекции объекта.", vbInformation
' Показать окно MSExcel
ex.ActiveSheet.Columns.AutoFit
ex.Application.WindowState = -4137' xlMaximized
End Sub
'==============================================================================
'==============================================================================
'Получить из массива строку с описанием типа события
Sub GetEventType(intEventType, strType)
Dim EventType
EventType = Array("Не определен", "Вход пользователя в систему", _
"Выход пользователя из системы", "Создание объекта", "Редактирование объекта", _
"Удаление объекта", "Создание версии объекта", "Удаление версии объекта", _
"Дублирование объекта", "Изменение статуса объекта", "Простановка подписи на объект ", _
"Добавление объекта в состав", "Удаление объекта из состава", "Исполнение команды", _
"Событие общего вида (пользовательское)", "Экспорт объектов TDMS", _
"Импорт объектов TDMS", "Экспорт схемы базы данных", "Ошибка", _
"Добавление файла в файловый состав объекта", "Удаление файла", _
"Выгрузка файла на жесткий диск", "Загрузка файла в хранилище файлов TDMS")
Select Case intEventType
Case tdmEventUndefined
strType = EventType(0)
Case tdmEventUserLogin
strType = EventType(1)
Case tdmEventUserLogoff
strType = EventType(2)
Case tdmEventObjectCreate
strType = EventType(3)
Case tdmEventObjectEdit
strType = EventType(4)
Case tdmEventObjectRemove
strType = EventType(5)
Case tdmEventObjectVersion
strType = EventType(6)
Case tdmEventObjectVersionRemove
strType = EventType(7)
Case tdmEventObjectDuplicate
strType = EventType(8)
Case tdmEventObjectStatus
strType = EventType(9)
Case tdmEventObjectSigned
strType = EventType(10)
Case tdmEventObjectContentAdd
strType = EventType(11)
Case tdmEventObjectContentRemove
strType = EventType(12)
Case tdmEventCommand
strType = EventType(13)
Case tdmEventCommon
strType = EventType(14)
Case tdmEventExportObjects
strType = EventType(15)
Case tdmEventImportObjects
strType = EventType(16)
Case tdmEventExportScheme
strType = EventType(17)
Case tdmEventError
strType = EventType(18)
Case tdmEventFileAdd
strType = EventType(19)
Case tdmEventFileErase
strType = EventType(20)
Case tdmEventFileCheckOut
strType = EventType(21)
Case tdmEventFileCheckIn
strType = EventType(22)
End Select
End Sub
'==============================================================================